from django.views import View

# 导入解析用户信息函数
# 获取数据库连接
from SaaSDevelTool.data_mysql_data import db
# 判断梯队位置
from SaaSDevelTool.data_operation import is_number
# 导入返回响应
from SaaSDevelTool.data_return_response import create_response
# 导入错误信息装饰器
from SaaSDevelTool.data_return_response import error_message_detection
# 导入创建功能包操作
from SaaSDevelTool.SaaSCenterOperateFunc import create_tenement_package_func, query_package_tenement_list

"""总页面添加"""


class SaaSDataSumResourceCreate(View):
    @error_message_detection
    def post(self, request):
        # 获取页面名称
        resource_name = request.POST.get("resource_name")
        # 获取页面注释
        resource_remark = request.POST.get("resource_remark")
        # 获取页面地址
        resource_urls = request.POST.get("resource_urls")
        # 获取页面类型，是否是首页 0:首页，1:平台页面
        resource_home_page = request.POST.get("resource_home_page")
        # 输入页面图标
        resource_images = request.POST.get("resource_images")
        # 输入功能包编号
        package_id = request.POST.get("package_id")
        # 判断必传的参数
        if not all([resource_name, resource_home_page, resource_images, package_id, resource_urls]):
            return create_response(
                code=400,
                msg="页面创建失败，参数页面名称，页面类型，页面图标，页面地址，功能包编号为必传参数。")

        # 判断页面名称长度
        if len(resource_name) > 30 or len(resource_name) < 2:
            return create_response(code=400, msg="页面创建失败，页面名称最大不能超过30字,最小不能小于2个字。")

        # 判断页面类型参数
        if not is_number(resource_home_page):
            return create_response(code=400, msg="页面创建失败，页面类型参数传递错误。")

        # 判断页面地址长度
        if len(resource_urls) > 50 or len(resource_urls) < 5:
            return create_response(
                code=400,
                msg="页面创建失败，页面地址最大不能超过50字,最小不能小于5个字。")

        # 判断功能包参数类型
        if not is_number(package_id):
            return create_response(code=400, msg="页面创建失败，功能包参数传递错误。")

        # 创建对应的功能包页面
        create_sum_page_resource_table_sql = """
            insert into
                db_saas_center.sum_page_resource_table(   
                    resource_name,
                    resource_remark,
                    resource_urls,
                    resource_home_page,
                    resource_images,
                    package_id)
            values
                ('{}','{}','{}',{},'{}',{})
            ;""".format(resource_name, resource_remark, resource_urls, resource_home_page, resource_images, package_id)
        # 调用方法执行语句
        db.update(create_sum_page_resource_table_sql)

        # 调用方法查看开启当前功能包的租户
        tenement_list = query_package_tenement_list(package_id)
        # 循环对应的值
        for i in tenement_list:
            # 调用语句
            create_status = create_tenement_package_func(i['tenement_id'], package_id)
            # 判断语句
            if create_status['status'] == False:
                # 返回响应
                return create_response(code=400, msg=create_status['msg'])

        # 返回对应的数据
        return create_response(code=200, msg="页面创建成功。")
